--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / network-visualiser / NetworkVisualiser.vue
Displaying Raw • Download
meshchatx/src/frontend/components/network-visualiser/NetworkVisualiser.vue 9f71f3420c18d5800afb493b723c328d23c7ea12 (9f71f342) Text, 78.99 KB
T8b949e<!-- SPDX-License-Identifier: 0BSD AND MIT -->
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 h-full min-w-0 relative dark:bg-zinc-950 overflow-hidden"Tb4b4b4>
T8b949e<!-- vis-network fallback canvas host -->
Tb4b4b4<Tff7b72div Te6edf3idTff7b72=Ta5d6ff"network" Te6edf3classTff7b72=Ta5d6ff"w-full h-full" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3hiddenTff7b72: Te6edf3rendererMode Tff7b72=== Ta5d6ff'webgl' Tb4b4b4}Ta5d6ff"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- WebGL + WASM scene (preferred when available) -->
Tb4b4b4<Tff7b72canvas
Te6edf3idTff7b72=Ta5d6ff"network-webgl"
Te6edf3refTff7b72=Ta5d6ff"webglCanvas"
Te6edf3classTff7b72=Ta5d6ff"w-full h-full absolute inset-0"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3hiddenTff7b72: Te6edf3rendererMode Tff7b72!== Ta5d6ff'webgl' Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72canvasTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rendererMode Tff7b72=== Ta5d6ff'webgl' Tff7b72&& Te6edf3hoverTooltipTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute z-20 max-w-xs rounded-xl border border-zinc-600/50 bg-zinc-950/90 px-3 py-2 text-xs font-medium text-zinc-100 shadow-lg whitespace-pre-line"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3hoverTooltipTb4b4b4.Te6edf3x Tff7b72+ T79c0ff12Tffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4, Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3hoverTooltipTb4b4b4.Te6edf3y Tff7b72+ T79c0ff12Tffd700}Ta5d6ffpxTa5d6ff` Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3hoverTooltipTb4b4b4.Te6edf3text Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72NetworkVisualiserLoadingOverlay
Tb4b4b4:Te6edf3is-loadingTff7b72=Ta5d6ff"Te6edf3isLoadingTa5d6ff"
Tb4b4b4:Te6edf3loading-statusTff7b72=Ta5d6ff"Te6edf3loadingStatusTa5d6ff"
Tb4b4b4:Te6edf3total-nodes-to-loadTff7b72=Ta5d6ff"Te6edf3totalNodesToLoadTa5d6ff"
Tb4b4b4:Te6edf3loaded-nodes-countTff7b72=Ta5d6ff"Te6edf3loadedNodesCountTa5d6ff"
Tb4b4b4:Te6edf3current-batchTff7b72=Ta5d6ff"Te6edf3currentBatchTa5d6ff"
Tb4b4b4:Te6edf3total-batchesTff7b72=Ta5d6ff"Te6edf3totalBatchesTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72NetworkVisualiserToolbar
Tb4b4b4:Te6edf3is-showing-controlsTff7b72=Ta5d6ff"Te6edf3isShowingControlsTa5d6ff"
Tb4b4b4:Te6edf3is-updatingTff7b72=Ta5d6ff"Te6edf3isUpdatingTa5d6ff"
Tb4b4b4:Te6edf3is-loadingTff7b72=Ta5d6ff"Te6edf3isLoadingTa5d6ff"
Tb4b4b4:Te6edf3auto-reloadTff7b72=Ta5d6ff"Te6edf3autoReloadTa5d6ff"
Tb4b4b4:Te6edf3enable-physicsTff7b72=Ta5d6ff"Te6edf3enablePhysicsTa5d6ff"
Tb4b4b4:Te6edf3hop-max-filterTff7b72=Ta5d6ff"Te6edf3hopMaxFilterTa5d6ff"
Tb4b4b4:Te6edf3node-countTff7b72=Ta5d6ff"Te6edf3displayNodeCountTa5d6ff"
Tb4b4b4:Te6edf3edge-countTff7b72=Ta5d6ff"Te6edf3displayEdgeCountTa5d6ff"
Tb4b4b4:Te6edf3online-interface-countTff7b72=Ta5d6ff"Te6edf3onlineInterfacesTb4b4b4.Te6edf3lengthTa5d6ff"
Tb4b4b4:Te6edf3offline-interface-countTff7b72=Ta5d6ff"Te6edf3offlineInterfacesTb4b4b4.Te6edf3lengthTa5d6ff"
Tb4b4b4:Te6edf3search-queryTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Tb4b4b4:Te6edf3preferred-rendererTff7b72=Ta5d6ff"Te6edf3preferredRendererTa5d6ff"
Tb4b4b4:Te6edf3engine-modeTff7b72=Ta5d6ff"Te6edf3engineModeTa5d6ff"
Tb4b4b4:Te6edf3fpsTff7b72=Ta5d6ff"Te6edf3fpsTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3is-showing-controlsTff7b72=Ta5d6ff"Te6edf3isShowingControls Tff7b72= Te6edf3$eventTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3auto-reloadTff7b72=Ta5d6ff"Te6edf3autoReload Tff7b72= Te6edf3$eventTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3enable-physicsTff7b72=Ta5d6ff"Te6edf3enablePhysics Tff7b72= Te6edf3$eventTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3hop-max-filterTff7b72=Ta5d6ff"Te6edf3onUserHopMaxFilterChangeTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3search-queryTff7b72=Ta5d6ff"Te6edf3searchQuery Tff7b72= Te6edf3$eventTa5d6ff"
Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3preferred-rendererTff7b72=Ta5d6ff"Te6edf3onPreferredRendererChangeTa5d6ff"
Tb4b4b4@Te6edf3manual-updateTff7b72=Ta5d6ff"Te6edf3manualUpdateTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72NetworkVisualiserLegend
Tb4b4b4:Te6edf3show-discovered-interfacesTff7b72=Ta5d6ff"Te6edf3showDiscoveredInterfacesTa5d6ff"
Tb4b4b4:Te6edf3discovered-countTff7b72=Ta5d6ff"Te6edf3discoveredInterfacesTb4b4b4.Te6edf3lengthTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Ta5d6ff"vis-network/styles/vis-network.css"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3Network Tb4b4b4} Tff7b72from Ta5d6ff"vis-network"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3DataSet Tb4b4b4} Tff7b72from Ta5d6ff"vis-data"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3getMdiIconPath Tb4b4b4} Tff7b72from Ta5d6ff"../../js/mdiIconNames.js"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3GlobalEmitter Tff7b72from Ta5d6ff"../../js/GlobalEmitter"Tb4b4b4;
Tff7b72import Te6edf3NetworkVisualiserLoadingOverlay Tff7b72from Ta5d6ff"./internal/NetworkVisualiserLoadingOverlay.vue"Tb4b4b4;
Tff7b72import Te6edf3NetworkVisualiserToolbar Tff7b72from Ta5d6ff"./internal/NetworkVisualiserToolbar.vue"Tb4b4b4;
Tff7b72import Te6edf3NetworkVisualiserLegend Tff7b72from Ta5d6ff"./internal/NetworkVisualiserLegend.vue"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3ANNOUNCE_HASH_CHUNK_SIZETb4b4b4,
Te6edf3VIZ_ANNOUNCE_ASPECTSTb4b4b4,
Te6edf3VIZ_ANNOUNCE_SOFT_CAPTb4b4b4,
Te6edf3VIZ_PATH_TABLE_SOFT_CAPTb4b4b4,
Te6edf3buildFullGraphTb4b4b4,
Te6edf3computeLodUpdatesTb4b4b4,
Te6edf3dedupeIconQueueEntriesTb4b4b4,
Te6edf3lodLevelFromScaleTb4b4b4,
Te6edf3pathHashesWithinHopFilterTb4b4b4,
Te6edf3pickAdaptiveFetchConcurrencyTb4b4b4,
Te6edf3settleLayoutTb4b4b4,
Te6edf3warmVisualiserWasmTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../js/networkVisualiserPerf.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3isVisualiserWasmReady Tb4b4b4} Tff7b72from Ta5d6ff"../../js/VisualiserWasmLoader.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3canUseVisualiserWebGLTb4b4b4, Te6edf3createVisualiserWebGLEngine Tb4b4b4} Tff7b72from Ta5d6ff"../../js/networkVisualiserWebGLEngine.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3loadVisualiserCacheTb4b4b4, Te6edf3saveVisualiserCache Tb4b4b4} Tff7b72from Ta5d6ff"../../js/networkVisualiserCache.js"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3BATTERY_SAVER_CHANGED_EVENTTb4b4b4,
Te6edf3effectiveVisualiserReloadMsTb4b4b4,
Te6edf3loadBatterySaverPrefsTb4b4b4,
Te6edf3saveBatterySaverPrefsTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../js/settings/batterySaverPrefs.js"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3loadVisualiserDisplayPrefsTb4b4b4,
Te6edf3persistVisualiserAutoReloadTb4b4b4,
Te6edf3persistVisualiserLiveLayoutTb4b4b4,
Te6edf3persistVisualiserRendererTb4b4b4,
Te6edf3VISUALISER_DISPLAY_PREFS_CHANGEDTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../js/settings/settingsVisualiserPrefs.js"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72const Te6edf3HOP_MAX_FILTER_STORAGE_KEY Tff7b72= Ta5d6ff"meshchatx.visualiser.maxHops"Tb4b4b4;
Tff7b72function Te6edf3readStoredHopMaxFilterTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3localStorage Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tff7b72return T79c0ff4Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Te6edf3HOP_MAX_FILTER_STORAGE_KEYTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72=== Tff7b72null Tff7b72|| Te6edf3raw Tff7b72=== Ta5d6ff""Tb4b4b4) Tff7b72return T79c0ff4Tb4b4b4;
Tff7b72const Te6edf3v Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72=== Tff7b72nullTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3v Tff7b72=== Ta5d6ff"number" Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(T79c0ff128Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return T79c0ff4Tb4b4b4;
Tb4b4b4}
Tff7b72return T79c0ff4Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3writeStoredHopMaxFilterTb4b4b4(Te6edf3vTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3localStorage Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Te6edf3HOP_MAX_FILTER_STORAGE_KEYTb4b4b4, Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e/*
* Yields control back to the browser so it can paint, dispatch input events,
* and run other tasks. Prefers the prioritized task scheduler when available
* (Chromium 94+ / Electron) and falls back to a zero-delay timer everywhere
* else. setTimeout(0) is intentionally used over Promise.resolve() because
* microtasks do not give the renderer a chance to repaint.
*/
Tff7b72function Te6edf3yieldToMainTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72&& Tffa657windowTb4b4b4.Te6edf3schedulerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657windowTb4b4b4.Te6edf3schedulerTb4b4b4.Tff7b72yield Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657windowTb4b4b4.Te6edf3schedulerTb4b4b4.Tff7b72yieldTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657windowTb4b4b4.Te6edf3schedulerTb4b4b4.Te6edf3postTask Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3schedulerTb4b4b4.Te6edf3postTaskTb4b4b4(Te6edf3resolveTb4b4b4, Tb4b4b4{ Te6edf3priorityTff7b72: Ta5d6ff"user-blocking" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3resolveTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/*
* Pick a visualisation chunk size that scales down on weak hardware. ARM SBCs
* commonly report 4 logical cores; phones/SoCs frequently report 2. Desktop
* uses large chunks (fewer DataSet updates / yields) so wall-clock build time
* stays competitive with upstream's single-pass update.
*/
Tff7b72function Te6edf3pickAdaptiveChunkSizeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cores Tff7b72= Tb4b4b4(Tff7b72typeof Te6edf3navigator Tff7b72!== Ta5d6ff"undefined" Tff7b72&& Te6edf3navigatorTb4b4b4.Te6edf3hardwareConcurrencyTb4b4b4) Tff7b72|| T79c0ff4Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cores Tff7b72<= T79c0ff2Tb4b4b4) Tff7b72return T79c0ff60Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cores Tff7b72<= T79c0ff4Tb4b4b4) Tff7b72return T79c0ff120Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cores Tff7b72<= T79c0ff6Tb4b4b4) Tff7b72return T79c0ff250Tb4b4b4;
Tff7b72return T79c0ff500Tb4b4b4;
Tb4b4b4}
T8b949e/* Skip event-loop yields when the path table is small enough for one paint. */
Tff7b72const Te6edf3VIZ_SYNC_PATH_THRESHOLD Tff7b72= T79c0ff180Tb4b4b4;
T8b949e/*
* Straight edges ({ enabled: false } object, never the boolean `false`). Boolean
* smooth breaks vis-network 9.x on later setOptions(); "continuous" curves
* recompute every drag frame and are too heavy once the graph is large.
*/
Tff7b72const Te6edf3VIZ_EDGE_SMOOTH Tff7b72= Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"NetworkVisualiser"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3NetworkVisualiserLoadingOverlayTb4b4b4,
Te6edf3NetworkVisualiserToolbarTb4b4b4,
Te6edf3NetworkVisualiserLegendTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3displayPrefs Tff7b72= Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3reticulumLogoPathTff7b72: Ta5d6ff"/assets/images/reticulum_logo_512.png"Tb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3autoReloadTff7b72: Te6edf3displayPrefsTb4b4b4.Te6edf3autoReloadTb4b4b4,
Te6edf3reloadIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isShowingControlsTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isUpdatingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3enablePhysicsTff7b72: Te6edf3displayPrefsTb4b4b4.Te6edf3enablePhysicsTb4b4b4,
Te6edf3preferredRendererTff7b72: Te6edf3displayPrefsTb4b4b4.Te6edf3renderer Tff7b72|| Ta5d6ff"auto"Tb4b4b4,
Te6edf3showDisabledInterfacesTff7b72: Te6edf3displayPrefsTb4b4b4.Te6edf3showDisabledInterfacesTb4b4b4,
Te6edf3showDiscoveredInterfacesTff7b72: Te6edf3displayPrefsTb4b4b4.Te6edf3showDiscoveredInterfacesTb4b4b4,
Te6edf3loadingStatusTff7b72: Ta5d6ff"Initializing..."Tb4b4b4,
Te6edf3loadedNodesCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalNodesToLoadTff7b72: T79c0ff0Tb4b4b4,
Te6edf3currentBatchTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalBatchesTff7b72: T79c0ff0Tb4b4b4,
Te6edf3interfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3discoveredInterfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3discoveredActiveTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3pathTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3announcesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3conversationsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3networkTff7b72: Tff7b72nullTb4b4b4,
Te6edf3webglEngineTff7b72: Tff7b72nullTb4b4b4,
Te6edf3rendererModeTff7b72: Ta5d6ff"vis"Tb4b4b4,
Te6edf3graphNodeCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3graphEdgeCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hoverTooltipTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodesTff7b72: Tff7b72new Te6edf3DataSetTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3edgesTff7b72: Tff7b72new Te6edf3DataSetTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3iconCacheTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3pageSizeTff7b72: T79c0ff1000Tb4b4b4,
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3hopMaxFilterTff7b72: Te6edf3readStoredHopMaxFilterTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3hopFilterDebounceTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3searchDebounceTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3abortControllerTff7b72: Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3currentLODTff7b72: Ta5d6ff"high"Tb4b4b4,
Te6edf3didDisableStabilizationTff7b72: Tff7b72falseTb4b4b4,
Te6edf3vizChunkSizeTff7b72: Te6edf3pickAdaptiveChunkSizeTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3pathFetchConcurrencyTff7b72: Te6edf3pickAdaptiveFetchConcurrencyTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3iconQueueTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3iconQueueRunningTff7b72: Tff7b72falseTb4b4b4,
Te6edf3iconQueueGenerationTff7b72: T79c0ff0Tb4b4b4,
Te6edf3lodRafIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3vizRunGenerationTff7b72: T79c0ff0Tb4b4b4,
Te6edf3physicsPausedForDragTff7b72: Tff7b72falseTb4b4b4,
Te6edf3engineModeTff7b72: Ta5d6ff"checking"Tb4b4b4,
Te6edf3fpsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3fpsRafIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3fpsFrameCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3fpsLastSampleMsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3cachedPositionsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3batterySaverPrefsTff7b72: Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3suppressLiveLayoutPersistTff7b72: Tff7b72falseTb4b4b4,
Te6edf3suppressAutoReloadPersistTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3onlineInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3statusTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3offlineInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3iTb4b4b4.Te6edf3statusTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hopFilterMaxTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3hopMaxFilterTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3displayNodeCountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3graphNodeCountTb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3displayEdgeCountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3graphEdgeCountTb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasRendererTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657BooleanTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3network Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3autoReloadTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3suppressAutoReloadPersistTb4b4b4) Tb4b4b4{
T8b949e// Silent persist: do not rebuild the graph for toggle-only changes.
Te6edf3persistVisualiserAutoReloadTb4b4b4(Te6edf3val Tff7b72=== Tff7b72trueTb4b4b4, Tb4b4b4{ Te6edf3emitTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
T8b949e// Already painted: quiet refresh so enabling auto-update does not flash
T8b949e// the loading overlay or re-settle the whole graph.
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3displayNodeCount Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onAutoReloadTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3manualUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3restartAutoReloadIntervalTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3enablePhysicsTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3suppressLiveLayoutPersistTb4b4b4) Tb4b4b4{
T8b949e// Silent persist: emitting prefs-changed would reprocess the graph
T8b949e// and re-settle node positions (looks like a reset).
Te6edf3persistVisualiserLiveLayoutTb4b4b4(Te6edf3val Tff7b72=== Tff7b72trueTb4b4b4, Tb4b4b4{ Te6edf3emitTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// Explicit Live Layout on should win over battery-saver override.
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72=== Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3prefs Tff7b72= Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3prefsTb4b4b4.Te6edf3enabled Tff7b72&& Te6edf3prefsTb4b4b4.Te6edf3disableVisualiserLiveLayoutTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3batterySaverPrefs Tff7b72= Te6edf3saveBatterySaverPrefsTb4b4b4(Tb4b4b4{
Te6edf3disableVisualiserLiveLayoutTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3refreshPhysicsEnabledTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3searchQueryTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Debounce full rebuilds while typing, as the filter still runs on existing data.
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimerTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimer Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimer Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff120Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hopMaxFilterTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimerTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimer Tff7b72= Te6edf3setTimeoutTb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimer Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3ensureAnnouncesForPathHashesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff80Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3iconQueue Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconQueueGeneration Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_visualiserPrefsHandlerTb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Te6edf3VISUALISER_DISPLAY_PREFS_CHANGEDTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_visualiserPrefsHandlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_batterySaverPrefsHandlerTb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Te6edf3BATTERY_SAVER_CHANGED_EVENTTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_batterySaverPrefsHandlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimerTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hopFilterDebounceTimer Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimerTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimer Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lodRafId Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lodRafIdTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lodRafId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stopFpsMeterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3webglEngine Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Clear icon cache to free memory
Tff7b72const Te6edf3revokedUrls Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3keys Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3key Tff7b72of Te6edf3keysTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3url Tff7b72= Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72&& Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"blob:"Tb4b4b4) Tff7b72&& Tff7b72!Te6edf3revokedUrlsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Te6edf3revokedUrlsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3iconCache Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3announces Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3conversations Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e/* DataSet may already be destroyed with the network */
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isMobile Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isMobileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isShowingControls Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3_visualiserPrefsHandler Tff7b72= Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3prevRenderer Tff7b72= Tff7b72thisTb4b4b4.Te6edf3preferredRendererTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyBatterySaverVisualiserPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3preferredRenderer Tff7b72!== Te6edf3prevRendererTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3reinitRendererTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hasRendererTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Te6edf3VISUALISER_DISPLAY_PREFS_CHANGEDTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_visualiserPrefsHandlerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_batterySaverPrefsHandler Tff7b72= Tb4b4b4(Te6edf3prefsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3batterySaverPrefs Tff7b72= Te6edf3prefs Tff7b72|| Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyBatterySaverVisualiserPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restartAutoReloadIntervalTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hasRendererTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Te6edf3BATTERY_SAVER_CHANGED_EVENTTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_batterySaverPrefsHandlerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyBatterySaverVisualiserPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3resolveEngineModeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3startFpsMeterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3initTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3applyBatterySaverVisualiserPrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3prefs Tff7b72= Tff7b72thisTb4b4b4.Te6edf3batterySaverPrefs Tff7b72|| Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3prefsTb4b4b4.Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3prefsTb4b4b4.Te6edf3disableVisualiserDiscoveryTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showDiscoveredInterfaces Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3prefsTb4b4b4.Te6edf3hideOfflineInterfacesTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showDisabledInterfaces Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3prefsTb4b4b4.Te6edf3disableVisualiserLiveLayoutTb4b4b4) Tb4b4b4{
T8b949e// Session override only. Do not overwrite the stored Live Layout pref.
Tff7b72thisTb4b4b4.Te6edf3suppressLiveLayoutPersist Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3suppressLiveLayoutPersist Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3prefsTb4b4b4.Te6edf3visualiserReloadSeconds Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3suppressAutoReloadPersist Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3autoReload Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3suppressAutoReloadPersist Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3restartAutoReloadIntervalTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reloadInterval Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3ms Tff7b72= Te6edf3effectiveVisualiserReloadMsTb4b4b4(T79c0ff15000Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3batterySaverPrefs Tff7b72|| Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ms Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3reloadInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3onAutoReloadTb4b4b4, Te6edf3msTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3resolveEngineModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3warmVisualiserWasmTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3okTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"webgl"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Te6edf3ok Tff7b72&& Te6edf3isVisualiserWasmReadyTb4b4b4(Tb4b4b4) Tff7b72? Ta5d6ff"wasm" Tff7b72: Ta5d6ff"fallback"Tb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"webgl"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"fallback"Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3startFpsMeterTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3stopFpsMeterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsFrameCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsLastSampleMs Tff7b72= Te6edf3performanceTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tick Tff7b72= Tb4b4b4(Te6edf3nowTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fpsFrameCount Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72const Te6edf3elapsed Tff7b72= Te6edf3now Tff7b72- Tff7b72thisTb4b4b4.Te6edf3fpsLastSampleMsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3elapsed Tff7b72>= T79c0ff1000Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fps Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3fpsFrameCount Tff7b72* T79c0ff1000Tb4b4b4) Tff7b72/ Te6edf3elapsedTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsFrameCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsLastSampleMs Tff7b72= Te6edf3nowTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72=== Ta5d6ff"checking"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"webgl"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3isVisualiserWasmReadyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"wasm"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3fpsRafId Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Te6edf3tickTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsRafId Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Te6edf3tickTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stopFpsMeterTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3fpsRafId Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3fpsRafIdTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fpsRafId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3snapshotNodePositionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3getPositionsTb4b4b4(Tb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3out Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3idTb4b4b4, Te6edf3pTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3snapTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3outTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3out Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3network Tff7b72|| Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositions Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3ids Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Te6edf3idsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3snapTb4b4b4) Tff7b72return Te6edf3outTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3snapTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3outTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3persistVisualiserCacheTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3identityHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3identityHashTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3positions Tff7b72= Tff7b72thisTb4b4b4.Te6edf3snapshotNodePositionsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4, Tb4b4b4...Te6edf3positions Tb4b4b4}Tb4b4b4;
Tff7b72await Te6edf3saveVisualiserCacheTb4b4b4(Tb4b4b4{
Te6edf3identityHashTb4b4b4,
Te6edf3pathTableTff7b72: Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4,
Te6edf3announcesTff7b72: Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4,
Te6edf3positionsTff7b72: Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4,
Te6edf3pathSoftCapTff7b72: Te6edf3VIZ_PATH_TABLE_SOFT_CAPTb4b4b4,
Te6edf3announceSoftCapTff7b72: Te6edf3VIZ_ANNOUNCE_SOFT_CAPTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onUserHopMaxFilterChangeTb4b4b4(Te6edf3vTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hopMaxFilter Tff7b72= Te6edf3vTb4b4b4;
Te6edf3writeStoredHopMaxFilterTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getInterfaceStatsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/interface-statsTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3interfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interface_statsTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch interface stats"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getDiscoveredInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/reticulum/discovered-interfacesTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveredInterfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discoveredActive Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3active Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getPathTableBatchTb4b4b4(Te6edf3destinationHashes Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Loading paths..."Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3destinationHashes Tff7b72&& Te6edf3destinationHashesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3resp Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/path-tableTa5d6ff`Tb4b4b4,
Tb4b4b4{ Te6edf3destination_hashesTff7b72: Te6edf3destinationHashes Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3respTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3path_tableTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72const Te6edf3firstResp Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/path-tableTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4, Te6edf3offsetTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3firstRespTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3path_tableTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3totalCount Tff7b72= Te6edf3firstRespTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3total_countTb4b4b4;
Tff7b72const Te6edf3softCap Tff7b72= Te6edf3VIZ_PATH_TABLE_SOFT_CAPTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3totalCount Tff7b72> Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3concurrency Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathFetchConcurrencyTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3offset Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4; Te6edf3offset Tff7b72< Te6edf3totalCountTb4b4b4; Te6edf3offset Tff7b72+= Tff7b72thisTb4b4b4.Te6edf3pageSize Tff7b72* Te6edf3concurrencyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72>= Te6edf3softCapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffLoading paths (capped at Tffd700${Te6edf3softCapTffd700}Ta5d6ff / Tffd700${Te6edf3totalCountTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3chunk Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3concurrency Tff7b72&& Te6edf3offset Tff7b72+ Te6edf3i Tff7b72* Tff7b72thisTb4b4b4.Te6edf3pageSize Tff7b72< Te6edf3totalCountTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3chunkTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3offset Tff7b72+ Te6edf3i Tff7b72* Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3promises Tff7b72= Te6edf3chunkTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3oTb4b4b4) Tb4b4b4=>
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/path-tableTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4, Te6edf3offsetTff7b72: Te6edf3o Tb4b4b4}Tb4b4b4,
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3responses Tff7b72= Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Te6edf3promisesTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3r Tff7b72of Te6edf3responsesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3rows Tff7b72= Te6edf3rTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3path_table Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3room Tff7b72= Te6edf3softCap Tff7b72- Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3room Tff7b72<= T79c0ff0Tb4b4b4) Tff7b72breakTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3rowsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffLoading paths (Tffd700${Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff / Tffd700${Te6edf3totalCountTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch path table batch"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchAnnouncesForHashesTb4b4b4(Te6edf3hashesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3hashesTb4b4b4) Tff7b72|| Te6edf3hashesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3concurrency Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathFetchConcurrencyTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3hashesTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3i Tff7b72+= Te6edf3ANNOUNCE_HASH_CHUNK_SIZE Tff7b72* Te6edf3concurrencyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3offsets Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3j Tff7b72= T79c0ff0Tb4b4b4; Te6edf3j Tff7b72< Te6edf3concurrency Tff7b72&& Te6edf3i Tff7b72+ Te6edf3j Tff7b72* Te6edf3ANNOUNCE_HASH_CHUNK_SIZE Tff7b72< Te6edf3hashesTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3jTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3offsetsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3i Tff7b72+ Te6edf3j Tff7b72* Te6edf3ANNOUNCE_HASH_CHUNK_SIZETb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3promises Tff7b72= Te6edf3offsetsTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3startTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3chunk Tff7b72= Te6edf3hashesTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3startTb4b4b4, Te6edf3start Tff7b72+ Te6edf3ANNOUNCE_HASH_CHUNK_SIZETb4b4b4)Tb4b4b4;
Tff7b72return Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(
Ta5d6ff"/api/v1/announces/query"Tb4b4b4,
Tb4b4b4{
Te6edf3destination_hashesTff7b72: Te6edf3chunkTb4b4b4,
Te6edf3aspectsTff7b72: Te6edf3VIZ_ANNOUNCE_ASPECTSTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signal Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3responses Tff7b72= Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Te6edf3promisesTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3resp Tff7b72of Te6edf3responsesTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3announce Tff7b72of Te6edf3respTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3announces Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3announceTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3announceTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffLoading announces (Tffd700${Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4)Tb4b4b4.Te6edf3lengthTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3ensureAnnouncesForPathHashesTb4b4b4(Tb4b4b4{ Te6edf3reset Tff7b72= Tff7b72false Tb4b4b4} Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3needed Tff7b72= Te6edf3pathHashesWithinHopFilterTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3hopMaxFilterTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resetTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3announces Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3missing Tff7b72= Te6edf3neededTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4=> Tff7b72!Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3hashTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3missingTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Loading announces..."Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchAnnouncesForHashesTb4b4b4(Te6edf3missingTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3neededTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3neededSet Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Te6edf3neededTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3hash Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3neededSetTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3hashTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3announceKeys Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3announceKeysTb4b4b4.Te6edf3length Tff7b72> Te6edf3VIZ_ANNOUNCE_SOFT_CAPTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3neededSet Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Te6edf3neededTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3extras Tff7b72= Te6edf3announceKeysTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3neededSetTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3overflow Tff7b72= Te6edf3announceKeysTb4b4b4.Te6edf3length Tff7b72- Te6edf3VIZ_ANNOUNCE_SOFT_CAPTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3hash Tff7b72of Te6edf3extrasTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3overflowTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3hashTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch config"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConversationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf/conversationsTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: T79c0ff2000 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3conversations Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3conversation Tff7b72of Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3conversationsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4[Te6edf3conversationTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3conversationTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch conversations"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3createIconImageTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4, Te6edf3backgroundColorTb4b4b4, Te6edf3size Tff7b72= T79c0ff64Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cacheKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3iconNameTffd700}Ta5d6ff-Tffd700${Te6edf3foregroundColorTffd700}Ta5d6ff-Tffd700${Te6edf3backgroundColorTffd700}Ta5d6ff-Tffd700${Te6edf3sizeTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4;
Tb4b4b4}
T8b949e// Limit cache size to 500 icons (approx 15-20MB max)
Tff7b72const Te6edf3cacheKeys Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cacheKeysTb4b4b4.Te6edf3length Tff7b72>= T79c0ff500Tb4b4b4) Tb4b4b4{
T8b949e// simple FIFO eviction
Tff7b72const Te6edf3oldKey Tff7b72= Te6edf3cacheKeysTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3oldUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3oldKeyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3oldUrl Tff7b72&& Te6edf3oldUrlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"blob:"Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// Check if any other keys use this URL before revoking
Tff7b72const Te6edf3stillUsed Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3valuesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4)Tb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3uTb4b4b4, Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3u Tff7b72=== Te6edf3oldUrl Tff7b72&& Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4)Tb4b4b4[Te6edf3iTb4b4b4] Tff7b72!== Te6edf3oldKey
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3stillUsedTb4b4b4) Tb4b4b4{
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3oldUrlTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3oldKeyTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3canvas Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"canvas"Tb4b4b4)Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3width Tff7b72= Te6edf3sizeTb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3height Tff7b72= Te6edf3sizeTb4b4b4;
Tff7b72const Te6edf3ctx Tff7b72= Te6edf3canvasTb4b4b4.Te6edf3getContextTb4b4b4(Ta5d6ff"2d"Tb4b4b4, Tb4b4b4{ Te6edf3alphaTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// draw background circle with subtle gradient
Tff7b72const Te6edf3gradient Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createLinearGradientTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3sizeTb4b4b4)Tb4b4b4;
Te6edf3gradientTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3backgroundColorTb4b4b4)Tb4b4b4;
Te6edf3gradientTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3backgroundColorTb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3gradientTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3beginPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3arcTb4b4b4(Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff2Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Add subtle inner shadow for depth
Tff7b72const Te6edf3innerShadow Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createRadialGradientTb4b4b4(
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff10Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2
Tb4b4b4)Tb4b4b4;
Te6edf3innerShadowTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Ta5d6ff"rgba(0,0,0,0)"Tb4b4b4)Tb4b4b4;
Te6edf3innerShadowTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff1Tb4b4b4, Ta5d6ff"rgba(0,0,0,0.15)"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3innerShadowTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Add a glass highlight on top
Tff7b72const Te6edf3highlight Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createLinearGradientTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3sizeTb4b4b4)Tb4b4b4;
Te6edf3highlightTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Ta5d6ff"rgba(255,255,255,0.25)"Tb4b4b4)Tb4b4b4;
Te6edf3highlightTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0.5Tb4b4b4, Ta5d6ff"rgba(255,255,255,0)"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3highlightTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3beginPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3arcTb4b4b4(Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff4Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// stroke
Te6edf3ctxTb4b4b4.Te6edf3strokeStyle Tff7b72= Ta5d6ff"rgba(255,255,255,0.2)"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3lineWidth Tff7b72= T79c0ff2Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3strokeTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// load MDI icon SVG
Tff7b72const Te6edf3iconSvg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getMdiIconSvgTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3img Tff7b72= Tff7b72new Te6edf3ImageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3svgBlob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3iconSvgTb4b4b4]Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"image/svg+xml" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3svgBlobTb4b4b4)Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tb4b4b4{
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Te6edf3resolveTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// Draw a subtle shadow for the icon itself
Te6edf3ctxTb4b4b4.Te6edf3shadowColor Tff7b72= Ta5d6ff"rgba(0,0,0,0.2)"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowBlur Tff7b72= T79c0ff4Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetX Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetY Tff7b72= T79c0ff2Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3drawImageTb4b4b4(Te6edf3imgTb4b4b4, Te6edf3size Tff7b72* T79c0ff0.22Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.22Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.56Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.56Tb4b4b4)Tb4b4b4;
T8b949e// Reset shadow for next operations
Te6edf3ctxTb4b4b4.Te6edf3shadowColor Tff7b72= Ta5d6ff"transparent"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowBlur Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetX Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetY Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3toBlobTb4b4b4(Tb4b4b4(Te6edf3blobTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3blobUrl Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4] Tff7b72= Te6edf3blobUrlTb4b4b4;
Te6edf3resolveTb4b4b4(Te6edf3blobUrlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, Ta5d6ff"image/png"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tb4b4b4{
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Te6edf3resolveTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3toBlobTb4b4b4(Tb4b4b4(Te6edf3blobTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3blobUrl Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4] Tff7b72= Te6edf3blobUrlTb4b4b4;
Te6edf3resolveTb4b4b4(Te6edf3blobUrlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, Ta5d6ff"image/png"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getMdiIconSvgTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3iconPath Tff7b72= Te6edf3getMdiIconPathTb4b4b4(Te6edf3iconNameTb4b4b4)Tb4b4b4;
Tff7b72return Ta5d6ff`Ta5d6ff<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="Tffd700${Te6edf3foregroundColorTffd700}Ta5d6ff" d="Tffd700${Te6edf3iconPathTffd700}Ta5d6ff"/></svg>Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showDisabledInterfaces Tff7b72= Te6edf3pTb4b4b4.Te6edf3showDisabledInterfacesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showDiscoveredInterfaces Tff7b72= Te6edf3pTb4b4b4.Te6edf3showDiscoveredInterfacesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tff7b72= Te6edf3pTb4b4b4.Te6edf3enablePhysicsTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3autoReload Tff7b72= Te6edf3pTb4b4b4.Te6edf3autoReloadTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3preferredRenderer Tff7b72= Te6edf3pTb4b4b4.Te6edf3renderer Tff7b72|| Ta5d6ff"auto"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onPreferredRendererChangeTb4b4b4(Te6edf3nextTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3normalized Tff7b72= Te6edf3next Tff7b72=== Ta5d6ff"webgl" Tff7b72|| Te6edf3next Tff7b72=== Ta5d6ff"vis" Tff7b72|| Te6edf3next Tff7b72=== Ta5d6ff"auto" Tff7b72? Te6edf3next Tff7b72: Ta5d6ff"auto"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3normalized Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3preferredRendererTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3preferredRenderer Tff7b72= Te6edf3normalizedTb4b4b4;
Te6edf3persistVisualiserRendererTb4b4b4(Te6edf3normalizedTb4b4b4, Tb4b4b4{ Te6edf3emitTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3reinitRendererTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3destroyActiveRendererTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hoverTooltip Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3webglEngine Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3network Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e/* ignore */
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72= Ta5d6ff"vis"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3reinitRendererTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3destroyActiveRendererTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initTb4b4b4(Tb4b4b4{ Te6edf3skipWarmTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3tryStartWebGLTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3canvas Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3webglCanvasTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3canvas Tff7b72|| Tff7b72!Te6edf3canUseVisualiserWebGLTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngine Tff7b72= Te6edf3createVisualiserWebGLEngineTb4b4b4(Te6edf3canvasTb4b4b4, Tb4b4b4{
Te6edf3getLiveLayoutTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tff7b72=== Tff7b72trueTb4b4b4,
Te6edf3isDarkTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4,
Te6edf3onNodeActivateTff7b72: Tb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3onWebGLNodeActivateTb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4)Tb4b4b4,
Te6edf3onHoverTff7b72: Tb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3onWebGLHoverTb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72= Ta5d6ff"webgl"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3engineMode Tff7b72= Ta5d6ff"webgl"Tb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"WebGL visualiser failed:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3webglEngine Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72= Ta5d6ff"vis"Tb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3refreshPhysicsEnabledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3setLiveLayoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3getPositionsTb4b4b4(Tb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4, Tb4b4b4...Te6edf3snap Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDragTb4b4b4) Tff7b72returnTb4b4b4;
T8b949e// Freeze current coordinates before stopping the solver so peers
T8b949e// stay where the live layout left them.
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3snapshotNetworkPositionsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3snapshotNetworkPositionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3network Tff7b72|| Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositions Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3ids Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idsTb4b4b4.Te6edf3lengthTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Te6edf3idsTb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3updates Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3snapTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Te6edf3updatesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3idTb4b4b4, Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3updatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3resettleLayoutFromNetworkTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3network Tff7b72|| Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositions Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3ids Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idsTb4b4b4.Te6edf3lengthTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Te6edf3idsTb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3layoutNodes Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3node Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3p Tff7b72= Te6edf3snapTb4b4b4[Te6edf3idTb4b4b4] Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3layoutNodesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTb4b4b4,
Te6edf3xTff7b72: Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72? Te6edf3pTb4b4b4.Te6edf3x Tff7b72: Te6edf3nodeTff7b72?Tb4b4b4.Te6edf3x Tff7b72|| T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4) Tff7b72? Te6edf3pTb4b4b4.Te6edf3y Tff7b72: Te6edf3nodeTff7b72?Tb4b4b4.Te6edf3y Tff7b72|| T79c0ff0Tb4b4b4,
Te6edf3massTff7b72: Te6edf3id Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff4 Tff7b72: Te6edf3nodeTff7b72?Tb4b4b4.Te6edf3group Tff7b72=== Ta5d6ff"interface" Tff7b72? T79c0ff2.5 Tff7b72: T79c0ff1Tb4b4b4,
Te6edf3fixedTff7b72: Te6edf3id Tff7b72=== Ta5d6ff"me"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3layoutEdges Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72fromTff7b72: Te6edf3eTb4b4b4.Tff7b72fromTb4b4b4,
Te6edf3toTff7b72: Te6edf3eTb4b4b4.Te6edf3toTb4b4b4,
Te6edf3lengthTff7b72: Te6edf3eTb4b4b4.Te6edf3width Tff7b72>= T79c0ff2.5 Tff7b72? T79c0ff260 Tff7b72: T79c0ff300Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3settled Tff7b72= Te6edf3settleLayoutTb4b4b4(Tb4b4b4{ Te6edf3nodesTff7b72: Te6edf3layoutNodesTb4b4b4, Te6edf3edgesTff7b72: Te6edf3layoutEdgesTb4b4b4, Te6edf3iterationsTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3positions Tff7b72= Te6edf3settledTff7b72?Tb4b4b4.Te6edf3positions Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3updates Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3positionsTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3updatesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3idTb4b4b4, Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3updatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshPhysicsEnabledTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3pickStablePositionTb4b4b4(Te6edf3idTb4b4b4, Te6edf3posByIdTb4b4b4, Te6edf3initialFnTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3prev Tff7b72= Te6edf3posByIdTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3prev Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3prevTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3prevTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3xTff7b72: Te6edf3prevTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3prevTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3v Tff7b72= Te6edf3initialFnTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3posByIdTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3vTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3vTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tff7b72return Te6edf3vTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3initTb4b4b4(Te6edf3opts Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3optsTb4b4b4.Te6edf3skipWarmTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3warmVisualiserWasmTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3preferred Tff7b72= Tff7b72thisTb4b4b4.Te6edf3preferredRenderer Tff7b72|| Te6edf3loadVisualiserDisplayPrefsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3renderer Tff7b72|| Ta5d6ff"auto"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3preferred Tff7b72=== Ta5d6ff"vis"Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initVisNetworkTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3started Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3tryStartWebGLTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3startedTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3manualUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restartAutoReloadIntervalTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3preferred Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"visualiser.renderer_webgl_unavailable"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3initVisNetworkTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onWebGLNodeActivateTb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3announce Tff7b72= Te6edf3metaTff7b72?Tb4b4b4.Te6edf3announceTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3announceTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3openAnnounceDestinationTb4b4b4(Te6edf3announceTb4b4b4, Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openAnnounceDestinationTb4b4b4(Te6edf3announceTb4b4b4, Te6edf3fallbackHash Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3announceTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3destinationHash Tff7b72= Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3destination_hash Tff7b72|| Te6edf3announceTb4b4b4.Te6edf3destinationHash Tff7b72|| Te6edf3fallbackHash Tff7b72|| Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3destinationHashTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"lxmf.delivery"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHash Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"nomadnetwork.node"Tb4b4b4) Tb4b4b4{
T8b949e// Navigate directly. Do not rely on nomad-open-node: that listener
T8b949e// only exists while NomadNetworkBrowser is mounted (keep-alive).
Tff7b72thisTb4b4b4.Te6edf3$router
Tb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHash Tb4b4b4}Tb4b4b4,
Te6edf3queryTff7b72: Tb4b4b4{ Te6edf3newTabTff7b72: Ta5d6ff"1" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onWebGLHoverTb4b4b4(Te6edf3idTb4b4b4, Te6edf3metaTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3id Tff7b72|| Tff7b72!Te6edf3metaTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hoverTooltip Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3text Tff7b72= Te6edf3metaTb4b4b4.Te6edf3title Tff7b72|| Te6edf3metaTb4b4b4.Te6edf3label Tff7b72|| Te6edf3idTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hoverTooltip Tff7b72= Tb4b4b4{ Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3text Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3initVisNetworkTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3container Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72= Ta5d6ff"vis"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3network Tff7b72= Tff7b72new Te6edf3NetworkTb4b4b4(
Te6edf3containerTb4b4b4,
Tb4b4b4{
Te6edf3nodesTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4,
Te6edf3edgesTff7b72: Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3interactionTff7b72: Tb4b4b4{
Te6edf3tooltipDelayTff7b72: T79c0ff100Tb4b4b4,
Te6edf3hoverTff7b72: Tff7b72trueTb4b4b4,
T8b949e// Hide edges while dragging/zooming, which is the biggest win vs upstream
T8b949e// for large graphs (upstream redraws every edge every frame).
Te6edf3hideEdgesOnDragTff7b72: Tff7b72trueTb4b4b4,
Te6edf3hideEdgesOnZoomTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3layoutTff7b72: Tb4b4b4{
Te6edf3randomSeedTff7b72: T79c0ff42Tb4b4b4,
Te6edf3improvedLayoutTff7b72: Tff7b72falseTb4b4b4, T8b949e// faster for large networks
Tb4b4b4}Tb4b4b4,
Te6edf3physicsTff7b72: Tb4b4b4{
Te6edf3enabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4,
Te6edf3solverTff7b72: Ta5d6ff"barnesHut"Tb4b4b4,
Te6edf3barnesHutTff7b72: Tb4b4b4{
T8b949e// Match upstream gravity, as avoidOverlap is O(n) per tick
T8b949e// and is the main reason we felt slower than MeshChat.
Te6edf3gravitationalConstantTff7b72: Tff7b72-T79c0ff3500Tb4b4b4,
Te6edf3springConstantTff7b72: T79c0ff0.03Tb4b4b4,
Te6edf3springLengthTff7b72: T79c0ff200Tb4b4b4,
Te6edf3dampingTff7b72: T79c0ff0.55Tb4b4b4,
Te6edf3avoidOverlapTff7b72: T79c0ff0Tb4b4b4,
Te6edf3thetaTff7b72: T79c0ff0.6Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stabilizationTff7b72: Tb4b4b4{
Te6edf3enabledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3iterationsTff7b72: T79c0ff80Tb4b4b4,
Te6edf3updateIntervalTff7b72: T79c0ff50Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3maxVelocityTff7b72: T79c0ff22Tb4b4b4,
Te6edf3minVelocityTff7b72: T79c0ff1.2Tb4b4b4,
Te6edf3timestepTff7b72: T79c0ff0.35Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3nodesTff7b72: Tb4b4b4{
Te6edf3borderWidthTff7b72: T79c0ff2Tb4b4b4,
Te6edf3borderWidthSelectedTff7b72: T79c0ff4Tb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{
Te6edf3borderTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3backgroundTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#1e40af" Tff7b72: Ta5d6ff"#eff6ff"Tb4b4b4,
Te6edf3highlightTff7b72: Tb4b4b4{ Te6edf3borderTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4, Te6edf3backgroundTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#2563eb" Tff7b72: Ta5d6ff"#dbeafe" Tb4b4b4}Tb4b4b4,
Te6edf3hoverTff7b72: Tb4b4b4{ Te6edf3borderTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4, Te6edf3backgroundTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#2563eb" Tff7b72: Ta5d6ff"#dbeafe" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{
Te6edf3faceTff7b72: Ta5d6ff"Inter, system-ui, sans-serif"Tb4b4b4,
Te6edf3strokeWidthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3strokeColorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"rgba(9, 9, 11, 0.95)" Tff7b72: Ta5d6ff"rgba(255, 255, 255, 0.95)"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
T8b949e// Canvas shadows are by far the most expensive per-node
T8b949e// operation in vis-network. Disable globally, as the borders
T8b949e// and circular-image rendering remain visually distinct.
Te6edf3shadowTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{
Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTHTb4b4b4,
Te6edf3selectionWidthTff7b72: T79c0ff2Tb4b4b4,
Te6edf3hoverWidthTff7b72: T79c0ff1.5Tb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{
Te6edf3opacityTff7b72: T79c0ff0.6Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"doubleClick"Tb4b4b4, Tb4b4b4(Te6edf3paramsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3clickedNodeId Tff7b72= Te6edf3paramsTb4b4b4.Te6edf3nodesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3clickedNodeIdTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3node Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3clickedNodeIdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3node Tff7b72|| Tff7b72!Te6edf3nodeTb4b4b4.Te6edf3_announceTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3openAnnounceDestinationTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3_announceTb4b4b4, Te6edf3clickedNodeIdTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3refreshPhysicsEnabledTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"dragStart"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3network Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDragTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDrag Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"dragEnd"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDrag Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDrag Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"zoom"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scheduleUpdateLODTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3manualUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// auto reload (interval respects battery saver)
Tff7b72thisTb4b4b4.Te6edf3restartAutoReloadIntervalTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3manualUpdateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isUpdatingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3updateTb4b4b4(Tb4b4b4{ Te6edf3silentTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onAutoReloadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3autoReload Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isLoadingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3updateTb4b4b4(Tb4b4b4{ Te6edf3silentTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3scheduleUpdateLODTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lodRafId Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lodRafIdTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3lodRafId Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3lodRafId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateLODTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3updateLODTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getScale Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3scale Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getScaleTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3newLOD Tff7b72= Te6edf3lodLevelFromScaleTb4b4b4(Te6edf3scaleTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72=== Te6edf3newLODTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72= Te6edf3newLODTb4b4b4;
T8b949e// Only mutate nodes whose LOD props actually change (avoids O(N)
T8b949e// DataSet churn + full redraw when zooming across thresholds).
Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updates Tff7b72= Te6edf3computeLodUpdatesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3newLODTb4b4b4, Te6edf3isDarkModeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3updatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3newLOD Tff7b72=== Ta5d6ff"high" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3iconQueueTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scheduleIconQueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3nodeColorTb4b4b4(Te6edf3borderTb4b4b4, Te6edf3backgroundTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3borderTb4b4b4,
Te6edf3backgroundTb4b4b4,
Te6edf3highlightTff7b72: Tb4b4b4{ Te6edf3borderTb4b4b4, Te6edf3background Tb4b4b4}Tb4b4b4,
Te6edf3hoverTff7b72: Tb4b4b4{ Te6edf3borderTb4b4b4, Te6edf3background Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3pathHopCountTb4b4b4(Te6edf3hopsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3hopsTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4) Tff7b72? Te6edf3n Tff7b72: Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isDirectPathHopTb4b4b4(Te6edf3hopsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3pathHopCountTb4b4b4(Te6edf3hopsTb4b4b4) Tff7b72=== T79c0ff1Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3directEdgeColorTb4b4b4(Te6edf3isDarkModeTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#34d399" Tff7b72: Ta5d6ff"#10b981"Tb4b4b4,
Te6edf3opacityTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3multiHopEdgeColorTb4b4b4(Te6edf3isDarkModeTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#60a5fa" Tff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3opacityTff7b72: T79c0ff0.5Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3interfaceDisplayLabelTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3nameTb4b4b4) Tff7b72return Ta5d6ff"Interface"Tb4b4b4;
Tff7b72const Te6edf3bracket Tff7b72= Te6edf3nameTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/\[([^\]]+)\]/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3bracketTb4b4b4) Tff7b72return Te6edf3bracketTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nameTb4b4b4.Te6edf3length Tff7b72> T79c0ff28Tb4b4b4) Tff7b72return Ta5d6ff`Tffd700${Te6edf3nameTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff25Tb4b4b4)Tffd700}Ta5d6ff...Ta5d6ff`Tb4b4b4;
Tff7b72return Te6edf3nameTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3pathTableInterfaceNamesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3names Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3entryTff7b72?Tb4b4b4.Tff7b72interface Tff7b72|| Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72== Tff7b72nullTb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hopFilterMax Tff7b72!= Tff7b72null Tff7b72&& Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72> Tff7b72thisTb4b4b4.Te6edf3hopFilterMaxTb4b4b4) Tff7b72continueTb4b4b4;
Te6edf3namesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3entryTb4b4b4.Tff7b72interfaceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3namesTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getNodeLODPropsTb4b4b4(Te6edf3nodeTb4b4b4, Te6edf3lodTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fontColor Tff7b72= Te6edf3isDarkMode Tff7b72? Ta5d6ff"#ffffff" Tff7b72: Ta5d6ff"#000000"Tb4b4b4;
Tff7b72const Te6edf3blueBorder Tff7b72= Ta5d6ff"#3b82f6"Tb4b4b4;
Tff7b72const Te6edf3blueBg Tff7b72= Te6edf3isDarkMode Tff7b72? Ta5d6ff"#1e40af" Tff7b72: Ta5d6ff"#eff6ff"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lod Tff7b72=== Ta5d6ff"low"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isInterface Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3group Tff7b72=== Ta5d6ff"interface"Tb4b4b4;
Tff7b72const Te6edf3baseColor Tff7b72= Te6edf3isInterface Tff7b72&& Te6edf3nodeTb4b4b4.Te6edf3color Tff7b72? Te6edf3nodeTb4b4b4.Te6edf3color Tff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeColorTb4b4b4(Te6edf3blueBorderTb4b4b4, Te6edf3blueBgTb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3idTff7b72: Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"dot"Tb4b4b4,
Te6edf3sizeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff15 Tff7b72: T79c0ff10Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3sizeTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Te6edf3colorTff7b72: Te6edf3baseColorTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3lod Tff7b72=== Ta5d6ff"medium"Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3idTff7b72: Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3shapeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3_originalShape Tff7b72|| Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3sizeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3_originalSize Tff7b72|| Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff50 Tff7b72: T79c0ff25Tb4b4b4)Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3sizeTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3idTff7b72: Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3shapeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3_originalShape Tff7b72|| Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3sizeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3_originalSize Tff7b72|| Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff50 Tff7b72: T79c0ff25Tb4b4b4)Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3sizeTff7b72: Te6edf3nodeTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff16 Tff7b72: T79c0ff11Tb4b4b4, Te6edf3colorTff7b72: Te6edf3fontColor Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updateTb4b4b4(Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3silent Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3silent Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3alreadyPainted Tff7b72= Tff7b72thisTb4b4b4.Te6edf3displayNodeCount Tff7b72> T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Fetching basic info..."Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3identityHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hashTb4b4b4;
T8b949e/*
* Cold open only: restore IndexedDB cache for a fast first paint.
* Auto-refresh must not reload cache (would overwrite live path data
* and rebuild the graph twice, which looks like a UI reset).
*/
Tff7b72let Te6edf3paintedFromCache Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3identityHash Tff7b72&& Tff7b72!Te6edf3alreadyPaintedTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cached Tff7b72= Tff7b72await Te6edf3loadVisualiserCacheTb4b4b4(Te6edf3identityHashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cachedTff7b72?Tb4b4b4.Te6edf3pathTableTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Te6edf3cachedTb4b4b4.Te6edf3pathTableTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3announces Tff7b72= Tb4b4b4{ Tb4b4b4...Tb4b4b4(Te6edf3cachedTb4b4b4.Te6edf3announces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72= Tb4b4b4{ Tb4b4b4...Tb4b4b4(Te6edf3cachedTb4b4b4.Te6edf3positions Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4;
Te6edf3paintedFromCache Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Tb4b4b4[Tff7b72thisTb4b4b4.Te6edf3getInterfaceStatsTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3getConversationsTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3getDiscoveredInterfacesTb4b4b4(Tb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silent Tff7b72&& Te6edf3paintedFromCache Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Restoring cached graph..."Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4{ Te6edf3silentTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Fetching network data..."Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPathTableBatchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
T8b949e/*
* Keep cached announces for known hashes and only fetch missing ones
* so reopen stays fast while still picking up newly seen nodes.
*/
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3ensureAnnouncesForPathHashesTb4b4b4(Tb4b4b4{ Te6edf3resetTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4{ Te6edf3silent Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3persistVisualiserCacheTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3processVisualizationTb4b4b4(Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3silent Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3silent Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3requestAnimationFrameTb4b4b4(Te6edf3rTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3runId Tff7b72= Tff7b72++Tff7b72thisTb4b4b4.Te6edf3vizRunGenerationTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Processing visualization..."Tb4b4b4;
Tb4b4b4}
T8b949e/*
* Invalidate any in-flight icon-generation work. Each call to
* processVisualization gets a new generation token; queued items
* carrying an older token are dropped when consumed so we do not
* paint canvases for nodes that no longer exist.
*/
Tff7b72thisTb4b4b4.Te6edf3iconQueueGeneration Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconQueue Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
T8b949e/*
* Pause vis-network physics for the bulk update. WASM may settle
* starting positions, then Live Layout re-enables JS physics so the
* graph keeps moving without requiring a drag.
* Silent auto-refresh keeps physics running so existing nodes do not jump.
*/
Tff7b72const Te6edf3physicsWasOn Tff7b72= Tff7b72thisTb4b4b4.Te6edf3network Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4;
Tff7b72const Te6edf3pausePhysics Tff7b72= Tffa657BooleanTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3network Tff7b72&& Tff7b72!Te6edf3silentTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3pausePhysicsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3_processVisualizationGraphTb4b4b4(Te6edf3runIdTb4b4b4, Tb4b4b4{ Te6edf3silent Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3runId Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3vizRunGenerationTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3setLiveLayoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3requestRedrawTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3network Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3didDisableStabilizationTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3didDisableStabilization Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3stabilizationTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72false Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3pausePhysics Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3network Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3physicsPausedForDragTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{
Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tffa657BooleanTb4b4b4(Te6edf3physicsWasOn Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{ Te6edf3smoothTff7b72: Te6edf3VIZ_EDGE_SMOOTH Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3network Tff7b72&& Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3redraw Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3redrawTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3_processVisualizationGraphTb4b4b4(Te6edf3runIdTb4b4b4, Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3silent Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3silent Tff7b72=== Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3isCurrentRun Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3runId Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3vizRunGeneration Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4;
Tff7b72const Te6edf3processedNodeIds Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3processedEdgeIds Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3posById Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3idTb4b4b4, Te6edf3pTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3posByIdTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3existingNodeIds Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3getPositionsTb4b4b4(Tb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3idTb4b4b4, Te6edf3pTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3snapTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3posByIdTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Te6edf3existingNodeIdsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3snapTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3existingNodeIdsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3snapTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3posByIdTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalNodesToLoad Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Building graph..."Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3announcePayload Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3hashTb4b4b4, Te6edf3announceTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3announces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3announceTb4b4b4) Tff7b72continueTb4b4b4;
Te6edf3announcePayloadTb4b4b4[Te6edf3hashTb4b4b4] Tff7b72= Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3aspectTff7b72: Te6edf3announceTb4b4b4.Te6edf3aspectTb4b4b4,
Te6edf3display_nameTff7b72: Te6edf3announceTb4b4b4.Te6edf3display_nameTb4b4b4,
Te6edf3custom_display_nameTff7b72: Te6edf3announceTb4b4b4.Te6edf3custom_display_nameTb4b4b4,
Te6edf3identity_hashTff7b72: Te6edf3announceTb4b4b4.Te6edf3identity_hashTb4b4b4,
Te6edf3last_seenTff7b72: Te6edf3announceTb4b4b4.Te6edf3updated_at
Tff7b72? Te6edf3UtilsTb4b4b4.Te6edf3convertDateTimeToLocalDateTimeStringTb4b4b4(Tff7b72new Tffa657DateTb4b4b4(Te6edf3announceTb4b4b4.Te6edf3updated_atTb4b4b4)Tb4b4b4)
Tff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3conversationPayload Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3hashTb4b4b4, Te6edf3convTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3conversations Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3convTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTb4b4b4) Tff7b72continueTb4b4b4;
Te6edf3conversationPayloadTb4b4b4[Te6edf3hashTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3lxmf_user_iconTff7b72: Te6edf3convTb4b4b4.Te6edf3lxmf_user_icon Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3searchLower Tff7b72= Tff7b72thisTb4b4b4.Te6edf3searchQueryTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3matchesSearch Tff7b72= Tb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4=> Tff7b72!Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tb4b4b4(Te6edf3text Tff7b72&& Te6edf3textTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchLowerTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3interfacesPayload Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3showDisabledInterfaces Tff7b72&& Tff7b72!Te6edf3entryTb4b4b4.Te6edf3statusTb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72let Te6edf3label Tff7b72= Te6edf3entryTb4b4b4.Te6edf3interface_name Tff7b72?? Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"LocalServerInterface" Tff7b72|| Te6edf3entryTb4b4b4.Te6edf3parent_interface_name Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3label Tff7b72= Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3labelTb4b4b4) Tff7b72&& Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4) Tff7b72continueTb4b4b4;
Te6edf3interfacesPayloadTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3labelTb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff`Tffd700${Te6edf3entryTb4b4b4.Te6edf3nameTffd700}Ta5d6ff\nTa5d6ffState: Tffd700${Te6edf3entryTb4b4b4.Te6edf3status Tff7b72? Ta5d6ff"Online" Tff7b72: Ta5d6ff"Offline"Tffd700}Ta5d6ff\nTa5d6ffBitrate: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBitsPerSecondTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3bitrateTb4b4b4)Tffd700}Ta5d6ff\nTa5d6ffTX: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3txbTb4b4b4)Tffd700}Ta5d6ff\nTa5d6ffRX: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3rxbTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3onlineTff7b72: Tff7b72!Tff7b72!Te6edf3entryTb4b4b4.Te6edf3statusTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3saver Tff7b72= Tff7b72thisTb4b4b4.Te6edf3batterySaverPrefs Tff7b72|| Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3saverTb4b4b4.Te6edf3enabled Tff7b72&&
Te6edf3saverTb4b4b4.Te6edf3maxVisualiserInterfaces Tff7b72> T79c0ff0 Tff7b72&&
Te6edf3interfacesPayloadTb4b4b4.Te6edf3length Tff7b72> Te6edf3saverTb4b4b4.Te6edf3maxVisualiserInterfaces
Tb4b4b4) Tb4b4b4{
Te6edf3interfacesPayloadTb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Tffa657NumberTb4b4b4(Te6edf3bTb4b4b4.Te6edf3onlineTb4b4b4) Tff7b72- Tffa657NumberTb4b4b4(Te6edf3aTb4b4b4.Te6edf3onlineTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3interfacesPayloadTb4b4b4.Te6edf3length Tff7b72= Te6edf3saverTb4b4b4.Te6edf3maxVisualiserInterfacesTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3seenIface Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Te6edf3interfacesPayloadTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pathOnlyPayload Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3name Tff7b72of Tff7b72thisTb4b4b4.Te6edf3pathTableInterfaceNamesTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3seenIfaceTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3nameTb4b4b4) Tff7b72&& Tff7b72!Te6edf3matchesSearchTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3interfaceDisplayLabelTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72continueTb4b4b4;
Te6edf3pathOnlyPayloadTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTb4b4b4,
Te6edf3labelTff7b72: Tff7b72thisTb4b4b4.Te6edf3interfaceDisplayLabelTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff`Tffd700${Te6edf3nameTffd700}Ta5d6ff\nTa5d6ffState: Active (path table)Ta5d6ff\nTa5d6ffUsed as next-hop for known routesTa5d6ff`Tb4b4b4,
Te6edf3onlineTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3discoveredPayload Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3showDiscoveredInterfacesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3activeEndpoints Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3a Tff7b72of Tff7b72thisTb4b4b4.Te6edf3discoveredActiveTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3aHost Tff7b72= Te6edf3aTb4b4b4.Te6edf3target_host Tff7b72|| Te6edf3aTb4b4b4.Te6edf3remote Tff7b72|| Te6edf3aTb4b4b4.Te6edf3listen_ipTb4b4b4;
Tff7b72const Te6edf3aPort Tff7b72= Te6edf3aTb4b4b4.Te6edf3target_port Tff7b72|| Te6edf3aTb4b4b4.Te6edf3listen_portTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3aHost Tff7b72&& Te6edf3aPort Tff7b72!= Tff7b72nullTb4b4b4) Te6edf3activeEndpointsTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff`Tffd700${Te6edf3aHostTffd700}Ta5d6ff:Tffd700${Te6edf3aPortTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3disc Tff7b72of Tff7b72thisTb4b4b4.Te6edf3discoveredInterfacesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3discId Tff7b72= Ta5d6ff`Ta5d6ffdiscovered~Tffd700${Te6edf3discTb4b4b4.Te6edf3discovery_hash Tff7b72|| Te6edf3discTb4b4b4.Te6edf3nameTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3discLabel Tff7b72= Te6edf3discTb4b4b4.Te6edf3name Tff7b72|| Te6edf3discTb4b4b4.Te6edf3reachable_on Tff7b72|| Ta5d6ff"Unknown"Tb4b4b4;
Tff7b72if Tb4b4b4(
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3discLabelTb4b4b4) Tff7b72&&
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3discTb4b4b4.Te6edf3reachable_onTb4b4b4) Tff7b72&&
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3discTb4b4b4.Te6edf3transport_idTb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3isConnected Tff7b72=
Te6edf3discTb4b4b4.Te6edf3reachable_on Tff7b72!= Tff7b72null Tff7b72&&
Te6edf3discTb4b4b4.Te6edf3port Tff7b72!= Tff7b72null Tff7b72&&
Te6edf3activeEndpointsTb4b4b4.Te6edf3hasTb4b4b4(Ta5d6ff`Tffd700${Te6edf3discTb4b4b4.Te6edf3reachable_onTffd700}Ta5d6ff:Tffd700${Te6edf3discTb4b4b4.Te6edf3portTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3discoveredPayloadTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3discIdTb4b4b4,
Te6edf3labelTff7b72: Te6edf3discLabelTb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff`Ta5d6ffDiscovered: Tffd700${Te6edf3discLabelTffd700}Ta5d6ff\nTa5d6ffType: Tffd700${Te6edf3discTb4b4b4.Te6edf3type Tff7b72|| Ta5d6ff"Unknown"Tffd700}Ta5d6ff\nTa5d6ffHops: Tffd700${Te6edf3discTb4b4b4.Te6edf3hops Tff7b72?? Ta5d6ff"?"Tffd700}Ta5d6ff\nTa5d6ffStatus: Tffd700${Te6edf3isConnected Tff7b72? Ta5d6ff"Connected" Tff7b72: Te6edf3discTb4b4b4.Te6edf3status Tff7b72|| Ta5d6ff"Available"Tffd700}Tffd700${Te6edf3discTb4b4b4.Te6edf3reachable_on Tff7b72? Ta5d6ff`Ta5d6ff\nTa5d6ffAddress: Tffd700${Te6edf3discTb4b4b4.Te6edf3reachable_onTffd700}Ta5d6ff:Tffd700${Te6edf3discTb4b4b4.Te6edf3portTffd700}Ta5d6ff` Tff7b72: Ta5d6ff""Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3connectedTff7b72: Te6edf3isConnectedTb4b4b4,
Te6edf3hopsTff7b72: Te6edf3discTb4b4b4.Te6edf3hops Tff7b72?? Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3meLabel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3display_name Tff7b72?? Ta5d6ff"Local Node"Tb4b4b4;
Tff7b72const Te6edf3fullReq Tff7b72= Tb4b4b4{
Te6edf3me_labelTff7b72: Te6edf3meLabelTb4b4b4,
Te6edf3me_titleTff7b72: Ta5d6ff`Ta5d6ffLocal Node: Tffd700${Te6edf3meLabelTffd700}Ta5d6ff\nTa5d6ffIdentity: Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hash Tff7b72?? Ta5d6ff"Unknown"Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3me_imageTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumLogoPathTb4b4b4,
Te6edf3identity_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hash Tff7b72?? Ta5d6ff""Tb4b4b4,
Te6edf3interfacesTff7b72: Te6edf3interfacesPayloadTb4b4b4,
Te6edf3path_only_interfacesTff7b72: Te6edf3pathOnlyPayloadTb4b4b4,
Te6edf3discoveredTff7b72: Te6edf3discoveredPayloadTb4b4b4,
Te6edf3path_tableTff7b72: Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4,
Te6edf3announcesTff7b72: Te6edf3announcePayloadTb4b4b4,
Te6edf3conversationsTff7b72: Te6edf3conversationPayloadTb4b4b4,
Te6edf3icon_cacheTff7b72: Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4,
Te6edf3positionsTff7b72: Te6edf3posByIdTb4b4b4,
Te6edf3hop_maxTff7b72: Tff7b72thisTb4b4b4.Te6edf3hopFilterMaxTb4b4b4,
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3searchQueryTb4b4b4,
Te6edf3dark_modeTff7b72: Te6edf3isDarkModeTb4b4b4,
Te6edf3lodTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentLODTb4b4b4,
Te6edf3aspectsTff7b72: Te6edf3VIZ_ANNOUNCE_ASPECTSTb4b4b4,
Te6edf3queue_iconsTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72!== Ta5d6ff"low"Tb4b4b4,
Te6edf3icon_generationTff7b72: Tff7b72thisTb4b4b4.Te6edf3iconQueueGenerationTb4b4b4,
Te6edf3show_discoveredTff7b72: Tff7b72thisTb4b4b4.Te6edf3showDiscoveredInterfacesTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72let Te6edf3graphTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isVisualiserWasmReadyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3graph Tff7b72= Te6edf3buildFullGraphTb4b4b4(Te6edf3fullReqTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// JS fallback keeps the previous path-only WASM/JS builder plus local shells.
Te6edf3graph Tff7b72= Te6edf3buildFullGraphTb4b4b4(Te6edf3fullReqTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3graphTb4b4b4.Te6edf3nodesTff7b72?Tb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3nTb4b4b4) Tb4b4b4=> Te6edf3nTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me"Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// buildFullGraph JS fallback only emits path nodes when WASM is down
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isCurrentRunTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72let Te6edf3graphNodes Tff7b72= Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3graphTb4b4b4.Te6edf3nodesTb4b4b4) Tff7b72? Te6edf3graphTb4b4b4.Te6edf3nodes Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3graphEdges Tff7b72= Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3graphTb4b4b4.Te6edf3edgesTb4b4b4) Tff7b72? Te6edf3graphTb4b4b4.Te6edf3edges Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
T8b949e// When WASM full-graph is unavailable, synthesize me/ifaces/discovered in JS.
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isVisualiserWasmReadyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3localNodes Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3localEdges Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3matchesSearchTb4b4b4(Te6edf3meLabelTb4b4b4) Tff7b72|| Te6edf3matchesSearchTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3mp Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pickStablePositionTb4b4b4(Ta5d6ff"me"Tb4b4b4, Te6edf3posByIdTb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3xTff7b72: T79c0ff0Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3meNode Tff7b72= Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3sizeTff7b72: T79c0ff50Tb4b4b4,
Te6edf3_originalSizeTff7b72: T79c0ff50Tb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3_originalShapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3imageTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumLogoPathTb4b4b4,
Te6edf3labelTff7b72: Te6edf3meLabelTb4b4b4,
Te6edf3titleTff7b72: Te6edf3fullReqTb4b4b4.Te6edf3me_titleTb4b4b4,
Te6edf3colorTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeColorTb4b4b4(Ta5d6ff"#3b82f6"Tb4b4b4, Te6edf3isDarkMode Tff7b72? Ta5d6ff"#1e40af" Tff7b72: Ta5d6ff"#eff6ff"Tb4b4b4)Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#ffffff" Tff7b72: Ta5d6ff"#000000"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff16Tb4b4b4, Te6edf3boldTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: Te6edf3mpTb4b4b4.Te6edf3xTb4b4b4,
Te6edf3yTff7b72: Te6edf3mpTb4b4b4.Te6edf3yTb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3meNode Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3meNodeTb4b4b4, Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3getNodeLODPropsTb4b4b4(Te6edf3meNodeTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3currentLODTb4b4b4) Tb4b4b4}Tb4b4b4;
Te6edf3localNodesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3meNodeTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Te6edf3interfacesPayloadTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3pos Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pickStablePositionTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4, Te6edf3posByIdTb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3xTff7b72: T79c0ff400Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3n Tff7b72= Tb4b4b4{
Te6edf3idTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"interface"Tb4b4b4,
Te6edf3labelTff7b72: Te6edf3entryTb4b4b4.Te6edf3labelTb4b4b4,
Te6edf3titleTff7b72: Te6edf3entryTb4b4b4.Te6edf3titleTb4b4b4,
Te6edf3sizeTff7b72: T79c0ff35Tb4b4b4,
Te6edf3_originalSizeTff7b72: T79c0ff35Tb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3_originalShapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3imageTff7b72: Te6edf3entryTb4b4b4.Te6edf3online
Tff7b72? Ta5d6ff"/assets/images/network-visualiser/interface_connected.png"
Tff7b72: Ta5d6ff"/assets/images/network-visualiser/interface_disconnected.png"Tb4b4b4,
Te6edf3colorTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeColorTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3online Tff7b72? Ta5d6ff"#10b981" Tff7b72: Ta5d6ff"#ef4444"Tb4b4b4, Te6edf3isDarkMode Tff7b72? Ta5d6ff"#064e3b" Tff7b72: Ta5d6ff"#ecfdf5"Tb4b4b4)Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#ffffff" Tff7b72: Ta5d6ff"#000000"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff12Tb4b4b4, Te6edf3boldTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: Te6edf3posTb4b4b4.Te6edf3xTb4b4b4,
Te6edf3yTff7b72: Te6edf3posTb4b4b4.Te6edf3yTb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3n Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3nTb4b4b4, Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3getNodeLODPropsTb4b4b4(Te6edf3nTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3currentLODTb4b4b4) Tb4b4b4}Tb4b4b4;
Te6edf3localNodesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Te6edf3localEdgesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff`Ta5d6ffme~Tffd700${Te6edf3entryTb4b4b4.Te6edf3nameTffd700}Ta5d6ff`Tb4b4b4,
Tff7b72fromTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3toTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3colorTff7b72: Te6edf3entryTb4b4b4.Te6edf3online
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3directEdgeColorTb4b4b4(Te6edf3isDarkModeTb4b4b4)
Tff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#f87171" Tff7b72: Ta5d6ff"#ef4444"Tb4b4b4, Te6edf3opacityTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Te6edf3widthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3hiddenTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Te6edf3pathOnlyPayloadTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3pos Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pickStablePositionTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4, Te6edf3posByIdTb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3xTff7b72: T79c0ff400Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3n Tff7b72= Tb4b4b4{
Te6edf3idTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"interface"Tb4b4b4,
Te6edf3labelTff7b72: Te6edf3entryTb4b4b4.Te6edf3labelTb4b4b4,
Te6edf3titleTff7b72: Te6edf3entryTb4b4b4.Te6edf3titleTb4b4b4,
Te6edf3sizeTff7b72: T79c0ff35Tb4b4b4,
Te6edf3_originalSizeTff7b72: T79c0ff35Tb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3_originalShapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3imageTff7b72: Ta5d6ff"/assets/images/network-visualiser/interface_connected.png"Tb4b4b4,
Te6edf3colorTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeColorTb4b4b4(Ta5d6ff"#10b981"Tb4b4b4, Te6edf3isDarkMode Tff7b72? Ta5d6ff"#064e3b" Tff7b72: Ta5d6ff"#ecfdf5"Tb4b4b4)Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#ffffff" Tff7b72: Ta5d6ff"#000000"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff12Tb4b4b4, Te6edf3boldTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: Te6edf3posTb4b4b4.Te6edf3xTb4b4b4,
Te6edf3yTff7b72: Te6edf3posTb4b4b4.Te6edf3yTb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3n Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3nTb4b4b4, Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3getNodeLODPropsTb4b4b4(Te6edf3nTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3currentLODTb4b4b4) Tb4b4b4}Tb4b4b4;
Te6edf3localNodesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Te6edf3localEdgesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff`Ta5d6ffme~Tffd700${Te6edf3entryTb4b4b4.Te6edf3nameTffd700}Ta5d6ff`Tb4b4b4,
Tff7b72fromTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3toTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3colorTff7b72: Tff7b72thisTb4b4b4.Te6edf3directEdgeColorTb4b4b4(Te6edf3isDarkModeTb4b4b4)Tb4b4b4,
Te6edf3widthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3hiddenTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3graphNodes Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3localNodesTb4b4b4, Tb4b4b4...Te6edf3graphNodesTb4b4b4]Tb4b4b4;
Te6edf3graphEdges Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3localEdgesTb4b4b4, Tb4b4b4...Te6edf3graphEdgesTb4b4b4]Tb4b4b4;
Te6edf3graphTb4b4b4.Te6edf3layout_nodes Tff7b72= Te6edf3graphNodesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3nTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3nTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3xTff7b72: Te6edf3nTb4b4b4.Te6edf3xTb4b4b4,
Te6edf3yTff7b72: Te6edf3nTb4b4b4.Te6edf3yTb4b4b4,
Te6edf3massTff7b72: Te6edf3nTb4b4b4.Te6edf3group Tff7b72=== Ta5d6ff"me" Tff7b72? T79c0ff4 Tff7b72: Te6edf3nTb4b4b4.Te6edf3group Tff7b72=== Ta5d6ff"interface" Tff7b72? T79c0ff2.5 Tff7b72: T79c0ff1Tb4b4b4,
Te6edf3fixedTff7b72: Te6edf3nTb4b4b4.Te6edf3id Tff7b72=== Ta5d6ff"me"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3graphTb4b4b4.Te6edf3layout_edges Tff7b72= Te6edf3graphEdgesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72fromTff7b72: Te6edf3eTb4b4b4.Tff7b72fromTb4b4b4,
Te6edf3toTff7b72: Te6edf3eTb4b4b4.Te6edf3toTb4b4b4,
Te6edf3lengthTff7b72: Te6edf3eTb4b4b4.Te6edf3width Tff7b72>= T79c0ff2.5 Tff7b72? T79c0ff260 Tff7b72: T79c0ff300Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Settling layout..."Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3layoutNodes Tff7b72= Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3graphTb4b4b4.Te6edf3layout_nodesTb4b4b4) Tff7b72? Te6edf3graphTb4b4b4.Te6edf3layout_nodes Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3layoutEdges Tff7b72= Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3graphTb4b4b4.Te6edf3layout_edgesTb4b4b4) Tff7b72? Te6edf3graphTb4b4b4.Te6edf3layout_edges Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
T8b949e/*
* Place only nodes that still lack coordinates. Existing nodes stay
* fixed so auto-refresh spawns newcomers without resetting the map.
*/
Tff7b72const Te6edf3missingIds Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3n Tff7b72of Te6edf3layoutNodesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3posByIdTb4b4b4[Te6edf3nTb4b4b4.Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3missingIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3nTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3shouldSettle Tff7b72= Te6edf3missingIdsTb4b4b4.Te6edf3size Tff7b72> T79c0ff0 Tff7b72&& Te6edf3isVisualiserWasmReadyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3shouldSettleTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3settleNodes Tff7b72= Te6edf3layoutNodesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3nTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tb4b4b4...Te6edf3nTb4b4b4,
Te6edf3fixedTff7b72: Tffa657BooleanTb4b4b4(Te6edf3nTb4b4b4.Te6edf3fixedTb4b4b4) Tff7b72|| Tff7b72!Te6edf3missingIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3nTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3settled Tff7b72= Te6edf3settleLayoutTb4b4b4(Tb4b4b4{
Te6edf3nodesTff7b72: Te6edf3settleNodesTb4b4b4,
Te6edf3edgesTff7b72: Te6edf3layoutEdgesTb4b4b4,
Te6edf3iterationsTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3positions Tff7b72= Te6edf3settledTff7b72?Tb4b4b4.Te6edf3positions Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3node Tff7b72of Te6edf3graphNodesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3missingIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72const Te6edf3p Tff7b72= Te6edf3positionsTb4b4b4[Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3p Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3xTb4b4b4) Tff7b72&& Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3pTb4b4b4.Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3nodeTb4b4b4.Te6edf3x Tff7b72= Te6edf3pTb4b4b4.Te6edf3xTb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3y Tff7b72= Te6edf3pTb4b4b4.Te6edf3yTb4b4b4;
Te6edf3posByIdTb4b4b4[Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3pTb4b4b4.Te6edf3xTb4b4b4, Te6edf3yTff7b72: Te6edf3pTb4b4b4.Te6edf3y Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4, Tb4b4b4...Te6edf3posById Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isCurrentRunTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3node Tff7b72of Te6edf3graphNodesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3announce Tff7b72= Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4) Te6edf3nodeTb4b4b4.Te6edf3_announce Tff7b72= Te6edf3announceTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3graphTb4b4b4.Te6edf3icon_queueTb4b4b4) Tff7b72&& Te6edf3graphTb4b4b4.Te6edf3icon_queueTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3iconQueueTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3graphTb4b4b4.Te6edf3icon_queueTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3node Tff7b72of Te6edf3graphNodesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nodeTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Te6edf3processedNodeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3edge Tff7b72of Te6edf3graphEdgesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3edgeTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Te6edf3processedEdgeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3edgeTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3chunkSize Tff7b72= Tff7b72thisTb4b4b4.Te6edf3vizChunkSizeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff1Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3ceilTb4b4b4(Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3graphNodesTb4b4b4.Te6edf3lengthTb4b4b4, Te6edf3graphEdgesTb4b4b4.Te6edf3lengthTb4b4b4) Tff7b72/ Te6edf3chunkSizeTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngine Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3rendererMode Tff7b72=== Ta5d6ff"webgl"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Uploading scene..."Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3setGraphTb4b4b4(Te6edf3graphNodesTb4b4b4, Te6edf3graphEdgesTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3counts Tff7b72= Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3getCountsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3graphNodeCount Tff7b72= Te6edf3countsTb4b4b4.Te6edf3nodesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3graphEdgeCount Tff7b72= Te6edf3countsTb4b4b4.Te6edf3edgesTb4b4b4;
Tff7b72const Te6edf3snap Tff7b72= Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3getPositionsTb4b4b4(Tb4b4b4) Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachedPositions Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3cachedPositionsTb4b4b4, Tb4b4b4...Te6edf3snap Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalNodesToLoad Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scheduleIconQueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3applyLimit Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3graphNodesTb4b4b4.Te6edf3lengthTb4b4b4, Te6edf3graphEdgesTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3applyLimitTb4b4b4; Te6edf3i Tff7b72+= Te6edf3chunkSizeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isCurrentRunTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatchTff7b72++Tb4b4b4;
Tff7b72const Te6edf3batchNodes Tff7b72= Te6edf3graphNodesTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4, Te6edf3i Tff7b72+ Te6edf3chunkSizeTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3batchEdges Tff7b72= Te6edf3graphEdgesTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4, Te6edf3i Tff7b72+ Te6edf3chunkSizeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3batchNodesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3batchNodesTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3batchEdgesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3batchEdgesTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4, Te6edf3i Tff7b72+ Te6edf3chunkSizeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3silentTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffProcessing Batch Tffd700${Tff7b72thisTb4b4b4.Te6edf3currentBatchTffd700}Ta5d6ff / Tffd700${Tff7b72thisTb4b4b4.Te6edf3totalBatchesTffd700}Ta5d6ff...Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72> Te6edf3VIZ_SYNC_PATH_THRESHOLDTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3yieldToMainTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isCurrentRunTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3nodesToRemove Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3processedNodeIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nodesToRemoveTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3removeTb4b4b4(Te6edf3nodesToRemoveTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3edgesToRemove Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3processedEdgeIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3edgesToRemoveTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3removeTb4b4b4(Te6edf3edgesToRemoveTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3graphNodeCount Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3graphEdgeCount Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalNodesToLoad Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scheduleIconQueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3scheduleIconQueueTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72=== Ta5d6ff"low" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3iconQueueTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconQueueRunningTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3run Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3runIconQueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3requestIdleCallback Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Te6edf3requestIdleCallbackTb4b4b4(Te6edf3runTb4b4b4, Tb4b4b4{ Te6edf3timeoutTff7b72: T79c0ff1500 Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3runTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
T8b949e/*
* Drains the deferred lxmf custom-icon queue. Runs sequentially with
* a yield between each icon so painting many icons cannot pin the
* main thread the way the old inline-await version did. Items tagged
* with a stale generation (a newer processVisualization started while
* we were running) are skipped, as are nodes that no longer exist.
*/
Tff7b72async Te6edf3runIconQueueTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconQueueRunning Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72=== Ta5d6ff"low"Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconQueueRunning Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3work Tff7b72= Te6edf3dedupeIconQueueEntriesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconQueueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconQueue Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3item Tff7b72of Te6edf3workTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3itemTb4b4b4.Te6edf3generation Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3iconQueueGenerationTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3url Tff7b72= Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3itemTb4b4b4.Te6edf3cacheKeyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tb4b4b4{
Te6edf3url Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3createIconImageTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3iconNameTb4b4b4, Te6edf3itemTb4b4b4.Te6edf3fgTb4b4b4, Te6edf3itemTb4b4b4.Te6edf3bgTb4b4b4, Te6edf3itemTb4b4b4.Te6edf3sizeTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3abortControllerTb4b4b4.Te6edf3signalTb4b4b4.Te6edf3abortedTb4b4b4) Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3updates Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3nodeId Tff7b72of Te6edf3itemTb4b4b4.Te6edf3nodeIdsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Te6edf3updatesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3idTff7b72: Te6edf3nodeIdTb4b4b4, Te6edf3imageTff7b72: Te6edf3url Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3nodeIdTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3updatesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3idTff7b72: Te6edf3nodeIdTb4b4b4, Te6edf3imageTff7b72: Te6edf3url Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3updatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3webglEngineTb4b4b4.Te6edf3updateNodeImagesTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72await Te6edf3yieldToMainTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3iconQueueRunning Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconQueueTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3currentLOD Tff7b72!== Ta5d6ff"low"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scheduleIconQueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72styleTb4b4b4>
Tb4b4b4.T56d364vis-networkTb4b4b4:Tf0883efocus Tb4b4b4{
Tff7b72outlineTb4b4b4: Tff7b72noneTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364vis-tooltip Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#f4f4f5 Tff7b72!importantTb4b4b4;
Tff7b72backgroundTb4b4b4: Tffa657rgbaTb4b4b4(T79c0ff9Tb4b4b4, T79c0ff9Tb4b4b4, T79c0ff11Tb4b4b4, T79c0ff0.92Tb4b4b4) Tff7b72!importantTb4b4b4;
Tff7b72borderTb4b4b4: T79c0ff1Tffa657px Tff7b72solid Tffa657rgbaTb4b4b4(T79c0ff63Tb4b4b4, T79c0ff63Tb4b4b4, T79c0ff70Tb4b4b4, T79c0ff0.5Tb4b4b4) Tff7b72!importantTb4b4b4;
Tff7b72border-radiusTb4b4b4: T79c0ff12Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72paddingTb4b4b4: T79c0ff12Tffa657px T79c0ff16Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72font-sizeTb4b4b4: T79c0ff13Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff500 Tff7b72!importantTb4b4b4;
Tff7b72font-styleTb4b4b4: Tff7b72normal Tff7b72!importantTb4b4b4;
Tff7b72font-familyTb4b4b4: Te6edf3InterTb4b4b4, Te6edf3system-uiTb4b4b4, Tff7b72sans-serif Tff7b72!importantTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.5 Tff7b72!importantTb4b4b4;
Tff7b72pointer-eventsTb4b4b4: Tff7b72none Tff7b72!importantTb4b4b4;
Tb4b4b4}
Tb4b4b4#T7ee787networkTff7b72,
Tb4b4b4#T7ee787network-webgl Tb4b4b4{
Tff7b72background-colorTb4b4b4: T79c0ff#f8fafcTb4b4b4;
Tff7b72background-imageTb4b4b4: Tffa657radial-gradientTb4b4b4(T79c0ff#e2e8f0 T79c0ff1Tffa657pxTb4b4b4, Tff7b72transparent T79c0ff1Tffa657pxTb4b4b4)Tb4b4b4;
Tff7b72background-sizeTb4b4b4: T79c0ff32Tffa657px T79c0ff32Tffa657pxTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4#T7ee787networkTff7b72,
Tb4b4b4.T56d364dark Tb4b4b4#T7ee787network-webgl Tb4b4b4{
Tff7b72background-colorTb4b4b4: T79c0ff#09090bTb4b4b4;
Tff7b72background-imageTb4b4b4: Tffa657radial-gradientTb4b4b4(T79c0ff#18181b T79c0ff1Tffa657pxTb4b4b4, Tff7b72transparent T79c0ff1Tffa657pxTb4b4b4)Tb4b4b4;
Tff7b72background-sizeTb4b4b4: T79c0ff32Tffa657px T79c0ff32Tffa657pxTb4b4b4;
Tb4b4b4}
Tb4b4b4#T7ee787network-webglTff7b72,
Tb4b4b4.T56d364network-webgl-labels Tb4b4b4{
Tff7b72image-renderingTb4b4b4: Tff7b72autoTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364network-webgl-labels Tb4b4b4{
Tff7b72-webkit-Te6edf3font-smoothingTb4b4b4: Te6edf3antialiasedTb4b4b4;
Tff7b72-moz-Te6edf3osx-font-smoothingTb4b4b4: Te6edf3grayscaleTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────